package com.demo.java.OD101_150.OD109;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【找出符合要求的字符串子串】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145693490
 */
public class OdMain {
    private static void solve(String findStr, String sourceStr) {
        // 使用 HashSet 来快速查找 sourceStr 中的字符
        Set<Character> sourceSet = new HashSet<>();
        for (int i = 0; i < sourceStr.length(); i++) {
            sourceSet.add(sourceStr.charAt(i));  // 将 sourceStr 中的字符添加到 HashSet
        }

        // 使用 TreeSet 自动去重并排序
        Set<Character> resultSet = new TreeSet<>();
        for (int i = 0; i < findStr.length(); i++) {
            char ch = findStr.charAt(i);
            if (sourceSet.contains(ch)) {
                resultSet.add(ch);  // 如果 sourceStr 包含 findStr 中的字符，加入结果集
            }
        }

        // 输出结果
        for (char ch : resultSet) {
            System.out.print(ch);
        }
        System.out.println();  // 输出换行
    }

    public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(System.in);
            String findStr = scan.nextLine();
            // 校验 findStr 的长度
            if (findStr.length() > 1024) {
                System.out.println("input error");
                return;
            }

            String sourceStr = scan.nextLine();
            // 校验 sourceStr 的长度
            if (sourceStr.length() > 1000000) {
                System.out.println("input error");
                return;
            }

            solve(findStr, sourceStr);  // 调用处理方法
        } catch (Exception e) {
            // 发生异常时统一输出错误信息
            System.out.println("input error");
        }
    }
}
